iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Python

30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手系列 第 24

Python 使用 openpyxl 建立 Excel 資料群組與凍結視窗【Python 處理 Excel #24】

  • 分享至 

  • xImage
  •  

本篇文章同步發布於 Python 使用 openpyxl 建立 Excel 資料群組與凍結視窗【Python 處理 Excel #24】

前言

這篇文章介紹如何使用 Python 的 openpyxl 實現 Excel 的資料群組 (大綱),以及如何使用 openpyxl 凍結 Excel 視窗。這兩個功能都是讓人在查看 Excel 檔案時能更聚焦於資料重點的小技巧,把不重要的資料隱藏起來,使人一目了然知道當前資料的主題是什麼。


文章案例說明

文章中使用 example.xlsx 作為說明用的案例資料。example.xlsx 的內容如下:

order_id create_date customer_name product_name order_quantity unit_price order_amount
10000 2024/6/5 Amy Chen Laptop Pro 45 1000 45000
10001 2024/6/6 Grace Liu Laptop Pro 165 1050 173250
10002 2024/6/13 Ivy Yang Gaming Desktop 265 1200 318000
10003 2024/6/15 David Lee Laptop Pro 120 1000 120000
10004 2024/6/16 Amy Chen Laptop Pro 115 950 109250
10005 2024/6/21 Amy Chen Gaming Desktop 60 1200 72000

什麼是 Excel 的資料群組 (大綱)?

Excel 中的資料群組功能能將資料列或資料欄位折疊或展開,透過資料群組功能,使用者可以隱藏或顯示特定的資料範圍,提升檔案的整潔度與可讀性。


什麼是 Excel 凍結視窗?

凍結視窗讓使用者在瀏覽 Excel 工作表時保持某些資料列或資料欄位始終可見,例如凍結首列讓表頭在捲動頁面時依然保持顯示,使用者就可以隨時參考欄位標題,不用回到工作表的頂部。


如何使用 openpyxl 建立 Excel 資料群組?

以下程式碼案例介紹如何使用 openpyxl 建立 Excel 資料群組,案例中會群組 Excel 檔案中的 order_quantityunit_price 欄位:

import openpyxl

def group_columns(workbook, sheet_name):
    """群組指定的欄位
    
    Args:
        workbook: openpyxl.Workbook 物件,已讀取的 Excel 活頁簿
        sheet_name: str,工作表名稱
    
    """
    sheet = workbook[sheet_name]
    # 群組 order_quantity (E 欄) 和 unit_price (F 欄)
    sheet.column_dimensions.group('E', 'F', hidden=True)

解釋

  • sheet = workbook[sheet_name]:取得指定名稱的工作表。
  • sheet.column_dimensions.group('E', 'F', hidden=True):將 E 欄和 F 欄進行群組,並設置為隱藏狀態。

如何使用 openpyxl 凍結 Excel 視窗?

以下程式碼介紹如何凍結 Excel 工作表的首列:

def freeze_top_row(workbook, sheet_name):
    """凍結指定工作表的首列
    
    Args:
        workbook: openpyxl.Workbook 物件,已讀取的 Excel 活頁簿
        sheet_name: str,工作表名稱
    
    """
    sheet = workbook[sheet_name]
    # 凍結首列
    sheet.freeze_panes = 'A2'

解釋

  • sheet = workbook[sheet_name]:取得指定名稱的工作表。
  • sheet.freeze_panes = 'A2':使用 sheet.freeze_panes 屬性指定的欲凍結的儲存格。這裡將視窗凍結在 A2,表示首列會被固定,使用者捲動工作表時仍然可以看到表頭。

測試用的程式碼案例

以下程式碼將資料群組與凍結視窗功能整合在一個名稱為 process_excel 的函數中,如果想要嘗試使用這兩個功能,可以使用以下程式碼測試:

import openpyxl

def process_excel(file_path, output_path):
    """處理 Excel 檔案,包含資料群組和凍結視窗
    
    Args:
        file_path: str,輸入的 Excel 檔案路徑
        output_path: str,輸出的 Excel 檔案路徑
    
    """
    # 讀取 Excel 檔案
    workbook = openpyxl.load_workbook(file_path)
    sheet_name = workbook.sheetnames[0]
    
    # 執行群組欄位
    group_columns(workbook, sheet_name)
    
    # 執行凍結視窗
    freeze_top_row(workbook, sheet_name)
    
    # 儲存處理後的 Excel 檔案
    workbook.save(output_path)

def group_columns(workbook, sheet_name):
    """將指定的欄位進行群組操作"""
    sheet = workbook[sheet_name]
    sheet.column_dimensions.group('E', 'F', hidden=True)

def freeze_top_row(workbook, sheet_name):
    """凍結指定工作表的首列"""
    sheet = workbook[sheet_name]
    sheet.freeze_panes = 'A2'

# 執行函數,處理 example.xlsx 並輸出結果
process_excel('example.xlsx', 'output.xlsx')

總結

  • Excel 資料群組可以摺疊不必要的欄位。Python openpyxl 對應資料群組功能的方法是 group_columns(workbook, sheet_name)
  • 凍結 Excel 欄位能讓使用者捲動工作表時保持必要資料持續可見。Python openpyxl 對應凍結視窗功能的方法是 freeze_top_row(workbook, sheet_name)

本篇文章同步發布於 Python 使用 openpyxl 建立 Excel 資料群組與凍結視窗【Python 處理 Excel #24】


上一篇
Python 使用 openpyxl 將 Excel 格式化為表格【Python 處理 Excel #23】
下一篇
如何使用 Python 的 openpyxl 建立 Excel 圖表?【Python 處理 Excel #25】
系列文
30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言